home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / util / misc / ReportPlus.lha / ReportPlus / Source / rp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-11  |  12.6 KB  |  462 lines

  1. #define MEDFIELD        32
  2. #define LONGFIELD       64
  3. #define VLONGFIELD      254
  4. #define LF              10      // linefeed
  5. #define PAGE0HEIGHT     94
  6. #define PAGE1HEIGHT     128
  7. #define PAGE2HEIGHT     180
  8. #define PAGE3HEIGHT     124
  9. #define PAGE4HEIGHT     186
  10. #define PAGE5HEIGHT     80
  11. #define PAGE6HEIGHT     170
  12. #define PAGE7HEIGHT     80
  13.  
  14. #include <exec/types.h>
  15. #include <exec/alerts.h>
  16. #include <exec/nodes.h>
  17. #include <exec/memory.h>
  18. #include <intuition/intuition.h>
  19. #include <intuition/gadgetclass.h>
  20. #include <graphics/displayinfo.h>
  21. #include <libraries/gadtools.h>
  22. #include <dos/dos.h>
  23. #include <dos/dosextens.h>
  24. #include <dos/datetime.h>
  25. #include <libraries/asl.h>
  26.  
  27. #include <stdio.h>                    // FILE, printf()
  28. #include <stdlib.h>                    // EXIT_SUCCESS, EXIT_FAILURE
  29.  
  30. // types
  31.  
  32. #define AGLOBAL                ;        // global (project-scope)
  33. #define MODULE                static    // external static (file-scope)
  34. #define PERSIST                static    // internal static (function-scope)
  35. typedef signed char            ABOOL;    // 8-bit signed quantity (replaces ABOOL)
  36. typedef signed char            SBYTE;    // 8-bit signed quantity (replaces Amiga BYTE)
  37. typedef signed short        SWORD;    // 16-bit signed quantity (replaces Amiga WORD)
  38. typedef signed long            SLONG;    // 32-bit signed quantity (same as LONG)
  39.  
  40. #define elif                else if
  41.  
  42. #define ILLEGAL                ((APTR) 0xA9A9)
  43. #define OLDKICKSTART        "Report+: You need Kickstart R2.04+!\n(Can't open intuition.library V37+!)\n"
  44. #define TITLEBAR            "Report+ 1.1"
  45. #define VERSION                "$VER: Report+ 1.1 (11.12.99)"
  46.  
  47. #define FIRSTQUALIFIER        0x61
  48. #define LASTQUALIFIER        0x67
  49. #define KEYUP                0x80    // key release
  50.  
  51. #define BUG                    0
  52. #define COM                    1
  53. #define ENH                    2
  54.  
  55. #define DEPTH                3
  56.  
  57. #define GREY                0
  58. #define BLACK                1
  59. #define WHITE                2
  60. #define RED                    3
  61. #define BLUE                4
  62. #define LIGHTGREY            5
  63. #define YELLOW                6
  64. #define PURPLE                7
  65.  
  66. #define PROJECTSTART        0        // array offsets of menu headers
  67. #define MN_PROJECT            0
  68. #define IN_ABOUT            0
  69. #define IN_QUIT                2
  70.  
  71. MODULE struct
  72. {    ULONG                    floppies, developer;
  73.     UWORD                    agnus, denise, cpu, model,
  74.                             type, severity, subsystem;
  75.     TEXT                    chipram[5], fastram[5],
  76.                             hard[MEDFIELD + 1],
  77.                             debug[LONGFIELD + 1],
  78.                             expansion[LONGFIELD + 1],
  79.                             subject[LONGFIELD + 1],
  80.                             editor[LONGFIELD + 1],
  81.                             output[LONGFIELD + 1],
  82.                             ks[6],
  83.                             wb[6],
  84.                             pv[LONGFIELD + 1],
  85.                             pp[LONGFIELD + 1],
  86.                             thirdname[MEDFIELD + 1],
  87.                             thirdver[MEDFIELD + 1],
  88.                             thirdmanuf[MEDFIELD + 1],
  89.                             lastname[MEDFIELD + 1],
  90.                             firstname[MEDFIELD + 1],
  91.                             company[MEDFIELD + 1],
  92.                             phone[MEDFIELD + 1],
  93.                             email[MEDFIELD + 1],
  94.                             refer[VLONGFIELD + 1],
  95.                             referid[VLONGFIELD + 1],
  96.                             path[VLONGFIELD + 1],
  97.                             config[VLONGFIELD + 1];
  98.     UWORD                   function;
  99.     TEXT                    amishort[41],
  100.                             amiuploader[41],
  101.                             amiauthor[41],
  102.                             amirequires[41],
  103.                             amiversion[41],
  104.                             amidistribution[41],
  105.                             amitype[41],
  106.                             amireplaces[41];
  107. } report =
  108. {   1, 0, 0, 0, 1, 4, 0, 0, 0,
  109.     "2", "0", "", "", "", "", "", "", "", "", "",
  110.     "", "", "", "", "", "", "", "", "", "", "", "", "",
  111.     0, "", "", "", "", "1.0", "", "", ""
  112. };
  113.  
  114. MODULE STRPTR FunctionOptions[3] =
  115. {   (STRPTR) "Bug report",
  116.     (STRPTR) "Aminet readme",
  117.     NULL
  118. };
  119. MODULE STRPTR RadioOptions1[4] =
  120. {    (STRPTR) "System Software or Hardware Bug Report",
  121.      (STRPTR) "Third Party Product Compatibility Report",
  122.      (STRPTR) "Enhancement Request",
  123.     NULL
  124. };
  125. MODULE STRPTR RadioOptions2[4] =
  126. {    (STRPTR) "Crashes, hangs or corrupts data",
  127.     (STRPTR) "Behaves incorrectly",
  128.     (STRPTR) "Cosmetic problem",
  129.     NULL
  130. };
  131. MODULE STRPTR RadioOptions3[5] =
  132. {    (STRPTR) "Crashes, hangs or corrupts data",
  133.     (STRPTR) "Behaves incorrectly",
  134.     (STRPTR) "Cosmetic problem",
  135.     (STRPTR) "Works correctly",
  136.     NULL
  137. };
  138. MODULE STRPTR AgnusOptions[6] =
  139. {    (STRPTR) "AGA",
  140.     (STRPTR) "ECS PAL",
  141.     (STRPTR) "ECS NTSC",
  142.     (STRPTR) "OCS PAL",
  143.     (STRPTR) "OCS NTSC",
  144.     NULL
  145. };
  146. MODULE STRPTR DeniseOptions[4] =
  147. {    (STRPTR) "AGA",
  148.     (STRPTR) "ECS",
  149.     (STRPTR) "OCS",
  150.     NULL
  151. };
  152. #define CPUS 5
  153. MODULE STRPTR CPUOptions[CPUS + 2] =
  154. {    (STRPTR) "68000",
  155.     (STRPTR) "68020",
  156.     (STRPTR) "68030",
  157.     (STRPTR) "68040",
  158.     (STRPTR) "68060",
  159.     (STRPTR) "PowerPC",
  160.     NULL
  161. };
  162. #define MODELS 13
  163. MODULE STRPTR ModelOptions[MODELS + 2] =
  164. {    (STRPTR) "A500",
  165.     (STRPTR) "A500+",
  166.     (STRPTR) "A600",
  167.     (STRPTR) "A1000",
  168.     (STRPTR) "A1200",
  169.     (STRPTR) "A1500",
  170.     (STRPTR) "A2000",
  171.     (STRPTR) "A2500",
  172.     (STRPTR) "A3000",
  173.     (STRPTR) "A4000",
  174.     (STRPTR) "CDTV",
  175.     (STRPTR) "CD32",
  176.     (STRPTR) "DraCo",
  177.     (STRPTR) "Emulator",
  178.     NULL
  179. };
  180.  
  181. struct NewGadget Gadget =
  182. {    0, 0,                    // left-x, top-y
  183.     0, 0,                    // width, height
  184.     0,                        // text
  185.     NULL,                    // font
  186.     NULL,                    // gadget ID
  187.     NULL,                    // flags
  188.     NULL,                    // visual info
  189.     NULL                    // user data
  190. };
  191.  
  192. #define MENUENTRIES               5
  193. struct NewMenu NewMenu[MENUENTRIES] =
  194. {    {    NM_TITLE,    "Project",         0 , 0,                    0, 0},
  195.     {     NM_ITEM,    "About...",        "?", 0,                    0, 0},
  196.     {     NM_ITEM,    NM_BARLABEL,     0 , 0,                    0, 0},
  197.     {     NM_ITEM,    "Quit",            "Q", 0,                    0, 0},
  198.     {      NM_END,    NULL,             0 , 0,                    0, 0}
  199. };
  200.  
  201. #define ABOUTLINES              4
  202. #define ABOUTSHADOW            BLACK
  203. #define ABOUTSHINE            WHITE
  204. #define ABOUTXPIXEL            312
  205. #define ABOUTYPIXEL             82
  206.  
  207. struct
  208. {    WORD x, y;
  209.     STRPTR text;
  210. } about[ABOUTLINES + 1] =
  211. {   {    80,        27,     "Report+ 1.1"                        },
  212.     {    80,        35,     "Saturday 11 December 1999"            },
  213.     {     80,        43,        "© 1999 Amigan Software"            },
  214.     {    16,        59,        "Programming, Graphics, Design:"       },
  215.     {    48,        67,        "James R. Jacobs"                   },
  216. };
  217.  
  218. void cleanexit(SBYTE rc);
  219. void clearkybd(void);
  220. void AddName(struct List* ListPtr, STRPTR name);
  221. void FreeNameNodes(struct List* ListPtr);
  222. void gadtools(void);
  223. void newwindow(SWORD width, SWORD height, STRPTR title, ULONG idcmp);
  224. void fileabout(void);
  225. void closewindow(void);
  226. void asl(void);
  227. void launcheditor(void);
  228. void loop(void);
  229. void page0(void);
  230. void page1(void);
  231. void page2(void);
  232. void page3(void);
  233. void page4(void);
  234. void page5(void);
  235. void page6(void);
  236. void page7(void);
  237. void refreshpv(void);
  238. void navigate(void);
  239. void say(STRPTR sentence);
  240. void setgadget(WORD leftx, WORD topy, WORD width, WORD height, STRPTR text,
  241.     ULONG flags);
  242. void parse(STRPTR terminator);
  243. ABOOL read(STRPTR pathname);
  244. void write(STRPTR pathname);
  245.  
  246. #define SUBSYSTEMS                    127
  247.  
  248. struct NameNode
  249. {    struct Node                        nn_Node;
  250.     UBYTE                            nn_Data[33];
  251. };
  252. struct
  253. {    TEXT    friendly[33], unfriendly[33];
  254. } subsystems[SUBSYSTEMS + 1] =
  255. {    {    "Worm Wars",                "wormwars"            },
  256.     {    "Workbench",                "workbench"            },
  257.     {    "Wack",                        "wack"                },
  258.     {    "utility.library",            "utility.library"    },
  259.     {    "Utilities/ programs",        "util.command"        },
  260.     {    "User manuals",                "userdocs"            },
  261.     {    "Unsure",                    ""                },
  262.     {    "UNIX",                        "unix"                },
  263.     {    "trackdisk.device",            "trackdisk"            },
  264.     {    "Tools/ programs",            "tools"                },
  265.     {    "ToolMaker",                "toolmaker"            },
  266.     {    "timer.device",                "timer.device"        },
  267.     {    "TCP/IP",                    "as225"                },
  268.     {    "System/ programs",            "system.command"    },
  269.     {    "Startup",                    "startup"            },
  270.     {    "Shell",                    "shell"                },
  271.     {    "serial.device",            "serial.device"        },
  272.     {    "SCSI.device",                "scsi.device"        },
  273.     {    "Scripts",                    "script"            },
  274.     {    "SANA-2",                    "sana2"                },
  275.     {    "ROMWack",                    "wack"                },
  276.     {    "ROM Kernel Manuals",        "rkm"                },
  277.     {    "Resources",                "resource"            },
  278.     {    "Report+",                    "report+"            },
  279.     {    "realtime",                    "realtime"            },
  280.     {    "ramlib",                    "ramlib"            },
  281.     {    "RAM-Handler",                "ram-handler"        },
  282.     {    "QUEUE-Handler",            "queue-handler"        },
  283.     {    "Printer drivers",            "printer.driver"    },
  284.     {    "printer.device",            "printer.device"    },
  285.     {    "Preferences",                "preferences"        },
  286.     {    "potgo.resource",            "potgo.resource"    },
  287.     {    "PORT-Handler",                "port-handler"        },
  288.     {    "PCMCIA",                    "creditcard"        },
  289.     {    "parallel.device",            "parallel.device"    },
  290.     {    "nonvolatile",                "nonvolatile"        },
  291.     {    "MultiView",                "multiview"            },
  292.     {    "Monitors",                    "monitors"            },
  293.     {    "MicroEMACS",                "microemacs"        },
  294.     {    "Maths: IEEE Dbl Prcsn",    "mathieeedoub"        },
  295.     {    "Maths: IEEE Sngl Prcsn",    "mathieeesing"        },
  296.     {    "Maths: IEEE",                "mathieee"            },
  297.     {    "Maths: FFP",                "mathffp"            },
  298.     {    "lowlevel.library",            "lowlevel"            },
  299.     {    "locale.library",            "locale.library"    },
  300.     {    "layers.library",            "layers"            },
  301.     {    "Keymaps",                    "keymaps"            },
  302.     {    "keymap.library",            "keymap"            },
  303.     {    "Keyboard",                    "keyboard"            },
  304.     {    "IPrefs",                    "iprefs"            },
  305.     {    "Intuition.library",        "intuition"            },
  306.     {    "IntelliFont",                "fountain"            },
  307.     {    "Installer",                "installer"            },
  308.     {    "input.device",                "input.device"        },
  309.     {    "IFFParse.library",            "iffparse"            },
  310.     {    "IDE.device",                "ide.device"        },
  311.     {    "IconEdit",                    "iconedit"            },
  312.     {    "icon.library",                "icon.library"        },
  313.     {    "HDToolBox",                "hdtoolbox"            },
  314.     {    "HDBackup",                    "hdbackup"            },
  315.     {    "Hardware",                    "hardware"            },
  316.     {    "Graphics",                    "graphics"            },
  317.     {    "Genlock",                    "genlock"            },
  318.     {    "gameport.device",            "gameport"            },
  319.     {    "GadTools.library",            "gadtools"            },
  320.     {    "gadget.classes",            "gadget.classes"    },
  321.     {    "Fountain",                    "fountain"            },
  322.     {    "Fonts",                    "fonts"                },
  323.     {    "filesystem",                "filesystem"        },
  324.     {    "filesystem.resource",        "filesysres"        },
  325.     {    "expansion.library",        "expansion"            },
  326.     {    "Exec.library",                "exec"                },
  327.     {    "Envoy",                    "envoy"                },
  328.     {    "Early Startup Control",    "bootmenu"            },
  329.     {    "DOS.library",                "dos.library"        },
  330.     {    "diskfont.library",            "diskfont"            },
  331.     {    "disk.resource",            "disk.resource"        },
  332.     {    "Developer support",        "devsupport"        },
  333.     {    "debug.lib",                "debug.lib"            },
  334.     {    "Datatypes",                "datatypes"            },
  335.     {    "Custom chipset",            "custom.chips"        },
  336.     {    "console.device",            "console.device"    },
  337.     {    "CON-Handler",                "con-handler"        },
  338.     {    "Commodities",                "commodities"        },
  339.     {    "clipboard.device",            "clipboard"            },
  340.     {    "CLI",                        "shell"                },
  341.     {    "CIA.resource",                "cia.resource"        },
  342.     {    "cdui",                        "cdui"                },
  343.     {    "CDTV.device",                "cdtv.device"        },
  344.     {    "CDTV",                        "cdtv"                },
  345.     {    "C: programs",                "cdos.command"        },
  346.     {    "CDFileSystem",                "cdfilesystem"        },
  347.     {    "CD.device",                "cd.device"            },
  348.     {    "CD32 hardware",            "cdgs"                },
  349.     {    "bullet.library",            "bullet"            },
  350.     {    "BRU",                        "bru"                },
  351.     {    "BridgeBoard",                "bridgeboard"        },
  352.     {    "Bootstrap",                "strap"                },
  353.     {    "Battery-backed memory",    "battmem"            },
  354.     {    "Battery-backed clock",        "battclock"            },
  355.     {    "AUTOCONFIG",                "autoconfig"        },
  356.     {    "audio.device",                "audio.device"        },
  357.     {    "ASL.library",                "asl.library"        },
  358.     {    "AS225",                    "as225"                },
  359.     {    "Art",                        "art"                },
  360.     {    "ARexx",                    "arexx"                },
  361.     {    "AppShell",                    "appshell"            },
  362.     {    "AmigaVision",                "amigavision"        },
  363.     {    "AmigaTerm",                "amigaterm"            },
  364.     {    "AmigaGuide",                "amigaguide"        },
  365.     {    "amiga.lib",                "amiga.lib"            },
  366.     {    "ALink",                    "alink"                },
  367.     {    "AGA chipset",                "aa.chips"            },
  368.     {    "AmigaBASIC",                "AmigaBasic"        },
  369.     {    "A4091",                    "A4091"                },
  370.     {    "A3000",                    "A3000"                },
  371.     {    "A2630",                    "A2630"                },
  372.     {    "A2620",                    "A2620"                },
  373.     {    "A2410",                    "A2410"                },
  374.     {    "A2300",                    "A2300"                },
  375.     {    "A2232",                    "A2232"                },
  376.     {    "A2091",                    "A2091"                },
  377.     {    "A2090A",                    "A2090.A2090A"        },
  378.     {    "A2090",                    "A2090.A2090A"        },
  379.     {    "A2065",                    "A2065"                },
  380.     {    "A2013",                    "A2013"                },
  381.     {    "A590",                        "A2091.A590"        },
  382.     {    "3D Look",                    "new.look"            }
  383. };
  384.  
  385. UWORD chip AboutData[189] =
  386. {    /* Plane 0 */
  387.     0xFFFF,0xFFFF,0xFFF8,
  388.     0xFDFF,0xC7FF,0xFFF8,
  389.     0xE53F,0x83FF,0xFFF8,
  390.     0xF8FF,0x01FF,0xFFF8,
  391.     0xE53E,0x10FF,0xFBF8,
  392.     0xFDFC,0x387F,0x9B38,
  393.     0xFFF8,0x7C3F,0xE0F8,
  394.     0xC3F0,0x0000,0x0018,
  395.     0xE1E0,0x1F0F,0xE0F8,
  396.     0xF0C3,0xE387,0x9B38,
  397.     0xF807,0xFC43,0xFBF8,
  398.     0xFC0F,0xFF81,0xFFF8,
  399.     0xFE1F,0xFFF0,0xFFF8,
  400.     0xFFFF,0xFFFF,0xFFF8,
  401.     0xFFFF,0xFFFF,0xFFF8,
  402.     0xF1C4,0x6C0E,0x39D8,
  403.     0xEEDB,0x6BFD,0xDAD8,
  404.     0xE0DB,0x6B8C,0x1B58,
  405.     0xDF5F,0x6BEB,0xEB98,
  406.     0xDF5F,0x6C0B,0xEBD8,
  407.     0xFFFF,0xFFFF,0xFFF8,
  408.     /* Plane 1 */
  409.     0xFFFF,0xFFFF,0xFFF8,
  410.     0xFFFF,0xFFFF,0xFFF8,
  411.     0xFFFF,0xFFFF,0xFFF8,
  412.     0xFFFF,0xFFFF,0xFFF8,
  413.     0xFFFF,0xFFFF,0xFFF8,
  414.     0xFFFF,0xFFFF,0xFFF8,
  415.     0xFFFF,0xFFFF,0xFFF8,
  416.     0xFFFF,0xFFFF,0xFFF8,
  417.     0xFFFF,0xFFFF,0xFFF8,
  418.     0xFFFF,0xFFFF,0xFFF8,
  419.     0xFFFF,0xFFFF,0xFFF8,
  420.     0xFFFF,0xFFFF,0xFFF8,
  421.     0xFFFF,0xFFFF,0xFFF8,
  422.     0xFFFF,0xFFFF,0xFFF8,
  423.     0xFFFF,0xFFFF,0xFFF8,
  424.     0xFFFF,0xFFFF,0xFFF8,
  425.     0xFFFF,0xFFFF,0xFFF8,
  426.     0xFFFF,0xFFFF,0xFFF8,
  427.     0xFFFF,0xFFFF,0xFFF8,
  428.     0xFFFF,0xFFFF,0xFFF8,
  429.     0xFFFF,0xFFFF,0xFFF8,
  430.     /* Plane 2 */
  431.     0xFFFF,0xFFFF,0xFFF8,
  432.     0xFFFF,0xFFFF,0xFFF8,
  433.     0xFFFF,0xFFFF,0xFFF8,
  434.     0xFFFF,0xFFFF,0xFFF8,
  435.     0xFFFF,0xFFFF,0xFFF8,
  436.     0xFFFF,0xFFFF,0xFFF8,
  437.     0xFFFF,0xFFFF,0xFFF8,
  438.     0xFFFF,0xFFFF,0xFFF8,
  439.     0xFFFF,0xFFFF,0xFFF8,
  440.     0xFFFF,0xFFFF,0xFFF8,
  441.     0xFFFF,0xFFFF,0xFFF8,
  442.     0xFFFF,0xFFFF,0xFFF8,
  443.     0xFFFF,0xFFFF,0xFFF8,
  444.     0xFFFF,0xFFFF,0xFFF8,
  445.     0xFFFF,0xFFFF,0xFFF8,
  446.     0xFFFF,0xFFFF,0xFFF8,
  447.     0xFFFF,0xFFFF,0xFFF8,
  448.     0xFFFF,0xFFFF,0xFFF8,
  449.     0xFFFF,0xFFFF,0xFFF8,
  450.     0xFFFF,0xFFFF,0xFFF8,
  451.     0xFFFF,0xFFFF,0xFFF8
  452. };
  453. struct Image About =
  454. {    0, 0,
  455.     45, 21, 3,
  456.     AboutData,
  457.     0xff, 0x0,
  458.     NULL
  459. };
  460.  
  461. // Must have blank line at EOF.
  462.